package tpcompiladores;

import java.util.ArrayList;

public class PolacaInversa {
    
    private ArrayList<String> polaca;
    private ArrayList<Integer> pila;
    private boolean error = false;
    
    public PolacaInversa(){
        polaca = new ArrayList<String>();
        pila = new ArrayList<Integer>();
    }
    
    public void setError(){
        error = true;
    }
    
    public boolean getError(){
        return error;
    }
    
    public void apilarPila(){
        pila.add(polaca.size()-1);
    }
    
    // para if-then-else
    public void completar(Integer pos){
        polaca.set(pos-1,String.valueOf(polaca.size()));
    }
    
    // para do-until
    public void completar(Integer value,int pos){
        polaca.set(pos-2,String.valueOf(value+1));
    }
    
    public String desapilarPolaca(){
        if(polaca.size()>0)
            return polaca.remove(0);
        else return null;
    }
    
    public String desapilarPolaca(int pos){
        if(polaca.size()>0)
            return polaca.remove(pos);
        else return null;
    }
    
    public Integer desapilarPila(){
        if(pila.size() > 0)
            return pila.remove(pila.size()-1);
        return null;
    }

    public int getTam(){
        return polaca.size();
    }
    
    public void apilar(String s){
        polaca.add(s);
    }
    
    public String imprimir(){
        String result = "";
        int i = 0;
        for(String s:polaca){
            result += i + ": " +s + System.getProperty("line.separator");
            i++;
        }
        return result;
    }
    
}
